home *** CD-ROM | disk | FTP | other *** search
-
- /******************************************************************************
- *
- * NSSDC/CDF Variable data processing.
- *
- * Version 2.0, 3-Mar-92, ST Systems (STX)
- *
- * Modification history:
- *
- * V1.0 29-Jan-91, D Grogan/H Leckner Original version (for CDF V2.0).
- * V1.1 25-Mar-91, J Love Cast malloc calls.
- * V1.2 25-Jun-91, J Love Removed 'kb_def_user.h'.
- * V1.3 28-Jun-91, J Love TRUE/FALSE.
- * V2.0 3-Mar-92, J Love Modified for IBM-PC port. CDF V2.2.
- * H Leckner
- *
- ******************************************************************************/
-
- #if defined (ultrix)
- #include <cursesX.h>
- #else
- #if defined (unix)
- #include <curses.h>
- #endif
- #endif
-
- #include <stdlib.h>
- #include <stdio.h>
-
- #include "cdfdist.h"
- #include "wfl.h"
- #include "cdfdist.h"
- #include "kb_def.h"
- #include "cdfbrow.h"
-
- #define MAX_ELEMENTS 14
- #define FIRST_ELEMENT 2
- #define DATATYPE 4
- #define NUMBYTES 5
- #define CP (*c)
- void VAR_DATA_open(var_ptr, cdf_name)
-
- struct var_total_struct **var_ptr;
- char cdf_name[];
-
- {
- struct var_data_struct *c;
- /*FILE *fptr;*/
- FILE *fopen();
- long int buf_size;
-
- /*long int i;*/
-
- buf_size = sizeof(struct var_total_struct);
- *var_ptr = (struct var_total_struct *) malloc(buf_size); /* V1.1 */
- buf_size = sizeof(struct var_data_struct);
- (**var_ptr).var_data_ptr =
- (struct var_data_struct *) malloc(buf_size); /* V1.1 */
- c = (**var_ptr).var_data_ptr;
- /* fptr = fopen("filename.dat","r");
- if(fptr == NULL)
- {
- printf ("Error openning for read\n"); */
-
- strcpy(CP.cdf_name,cdf_name);
- strcpy(CP.var_mnemonic," ");
- strcpy(CP.data_type,"REAL*4");
- CP.num_bytes = 4;
- strcpy(CP.fieldnam," ");
- strcpy(CP.units," ");
- strcpy(CP.format," ");
- strcpy(CP.record_variance,"T");
- strcpy(CP.dim_variance,"FFFFFFFFFF");
- CP.validmin = 0.;
- CP.validmax = 100.;
- CP.scalemin = 0.;
- CP.scalemax = 0.;
- strcpy(CP.catdesc," ");
- CP.field_address = 0;
- CP.field_len = 0;
- strcpy(CP.dec_routine," ");
- strcpy(CP.dec_datatype,"REAL*4");
- strcpy(CP.dec_vartype,"D");
- /* }
-
- else
- {
- fread (*c, buf_size, 1, fptr);
- fclose (fptr);
- } */
- VAR_FORM_init((struct var_form_struct **) &(**var_ptr).var_screen_ptr);
- }
-
- void VAR_DATA_display ( var_ptr, var_num)
-
- struct var_total_struct *var_ptr;
- long int *var_num;
- {
- struct var_data_struct *c;
- /*long int *page;*/
- int element;
- int data_type; /* DT_STRING:string,
- DT_LONGINT: int, DT_FLOAT: float */
-
- c = (*var_ptr).var_data_ptr;
-
- VAR_FORM_load_form((struct var_form_struct *) (*var_ptr).var_screen_ptr);
-
- /*
- Display cdf_name data
- */
- element = 1;
- data_type = DT_STRING;
- VAR_FORM_display_element( (long *) CP.cdf_name, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display page num
- */
- element = 2;
- data_type = DT_LONGINT;
- VAR_FORM_display_element( var_num, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display var_mnemonic
- */
- element = 3;
- data_type = DT_STRING;
- VAR_FORM_display_element( (long *)CP.var_mnemonic, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display data type
- */
- element = 4;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.data_type, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- /*
- Display number of bytes
- */
- element = 5;
- data_type = DT_LONGINT;
-
- VAR_FORM_display_element( &CP.num_bytes, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- /*
- Display fieldname
- */
- element = 6;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.fieldnam, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display units
- */
- element = 7;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.units, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display format
- */
- element = 8;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.format, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display record variance
- */
- element = 9;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.record_variance, data_type,
- element, (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display dimension variance
- */
- element = 10;
- data_type = DT_STRING;
-
- VAR_FORM_display_element( (long *)CP.dim_variance, data_type,
- element, (struct var_form_struct *)(*var_ptr).var_screen_ptr);
-
- /*
- Display validmin
- */
- element = 11;
- data_type = DT_FLOAT;
-
- VAR_FORM_display_element( (long *)&CP.validmin, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- /*
- Display validmax
- */
- element = 12;
- data_type = DT_FLOAT;
-
- VAR_FORM_display_element( (long *)&CP.validmax, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- /*
- Display scalemin
- */
- element = 13;
- data_type = DT_FLOAT;
-
- VAR_FORM_display_element( (long *)&CP.scalemin, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- /*
- Display scalemax
- */
- element = 14;
- data_type = DT_FLOAT;
-
- VAR_FORM_display_element( (long *)&CP.scalemax, data_type, element,
- (struct var_form_struct *)(*var_ptr).var_screen_ptr);
- }
- void VAR_DATA_read ( var_ptr, var_num)
-
- struct var_total_struct *var_ptr;
- long int *var_num;
- {
-
- struct var_data_struct *c;
- struct read_data
- {
- long int data_type;
- long int *data;
- } elem_data[MAX_ELEMENTS];
-
- long int *form_ptr;
- int element;
- int data_type; /* DT_STRING:string,
- DT_LONGINT: int, DT_FLOAT: float */
- int rcode;
- int element_count = FIRST_ELEMENT;
- /*long int page;*/
- long int done = FALSE;
- char string_val[7];
- /*int strcmp();*/
- int num_bytes;
- strcpy(string_val,"STRING\0");
-
- c = (*var_ptr).var_data_ptr;
- form_ptr = (*var_ptr).var_screen_ptr;
-
- /*
- Transfer pointers of allocated memory into temporary storage
- defined for each element number
- */
-
- elem_data[1].data_type = DT_LONGINT;
- elem_data[2].data_type = DT_STRING;
- elem_data[3].data_type = DT_STRING;
- elem_data[4].data_type = DT_LONGINT;
- elem_data[5].data_type = DT_STRING;
- elem_data[6].data_type = DT_STRING;
- elem_data[7].data_type = DT_STRING;
- elem_data[8].data_type = DT_STRING;
- elem_data[9].data_type = DT_STRING;
- elem_data[10].data_type = DT_FLOAT;
- elem_data[11].data_type = DT_FLOAT;
- elem_data[12].data_type = DT_FLOAT;
- elem_data[13].data_type = DT_FLOAT;
- elem_data[1].data = var_num;
- elem_data[2].data = (long int *) CP.var_mnemonic;
- elem_data[3].data = (long int *) CP.data_type;
- elem_data[4].data = &CP.num_bytes;
- elem_data[5].data = (long int *) CP.fieldnam;
- elem_data[6].data = (long int *) CP.units;
- elem_data[7].data = (long int *) CP.format;
- elem_data[8].data = (long int *) CP.record_variance;
- elem_data[9].data = (long int *) CP.dim_variance;
- elem_data[10].data = (long int *) &CP.validmin;
- elem_data[11].data = (long int *) &CP.validmax;
- elem_data[12].data = (long int *) &CP.scalemin;
- elem_data[13].data = (long int *) &CP.scalemax;
-
- while ( done != TRUE)
- {
-
- element = element_count;
- data_type = elem_data[element_count-1].data_type;
-
- VAR_FORM_read_element( elem_data[element_count-1].data,
- data_type, element, (struct var_form_struct * )form_ptr,
- &rcode);
-
- if(element_count == DATATYPE)
- {
- /*
- Retrieve number of bytes for a specified data type
- */
- VAR_FORM_get_nbytes((char *) elem_data[element_count-1].data,
- (struct var_form_struct * )form_ptr, element_count,
- &num_bytes);
- data_type = DT_LONGINT;
- if(num_bytes > 0)
- VAR_FORM_display_element( (long *)&num_bytes, data_type,
- NUMBYTES, (struct var_form_struct * )form_ptr);
- }
-
- done = WFL_rove_form (rcode, &element_count,
- FIRST_ELEMENT, MAX_ELEMENTS, 1);
-
- if (element_count == NUMBYTES && num_bytes > 0)
- {
- if ( (rcode == KBF_NEXTFIELD)/* ||
- (rcode == KBF_DOWN)*/ )
- element_count ++;
-
- if ( (rcode == KBF_PREVFIELD)/* ||
- (rcode == KBF_UP)*/ )
- element_count --;
- }
- }
-
- }
-
-
- void VAR_DATA_erase ( var_ptr )
-
- struct var_total_struct *var_ptr;
- {
- VAR_FORM_erase_form((struct var_form_struct *)(*var_ptr).var_screen_ptr );
- }
-